#include enum codes; enum types; union container; struct string; struct variable; struct array; struct list; struct deck; struct pair; struct storage; struct object; struct result; enum codes { SUCCESS, FAILURE }; enum types { S8, U8, S16, U16, S32, U32, S64, U64, F32, F64, REFERENCE, EMPTY, CODE, TYPE, CONTAINER, STRING, VARIABLE, ARRAY, LIST, DECK, PAIR, STORAGE, OBJECT, RESULT, CUSTOM }; union container { int8_t s8; uint8_t u8; int16_t s16; uint16_t u16; int32_t s32; uint32_t u32; int64_t s64; uint64_t u64; float f32; double f64; void *ref; enum codes code; enum types type; }; struct string { uint64_t symbols; uint64_t length; char *data; }; struct variable { enum types type; union container value; }; struct array { uint64_t length; struct variable content; }; struct list { struct variable content; struct list *previous; struct list *next; }; struct deck { struct list *current; struct list *first; struct list *last; }; struct pair { struct string name; struct variable value; }; union storage { struct array linear; struct list linked; }; struct object { struct string name; enum types type; union storage content; }; struct result { enum codes code; struct string message; struct variable content; }; enum codes make(struct variable *var, ); var.type=S8; var.s8=123; struct variable make(enum types type, union ); var k=make(S8, 123); struct result create_result(enum codes code, struct string message, struct variable content); struct result create_object(struct string name); struct result create_pair(struct string name, struct variable value); struct result create_list(enum types type, uint64_t length); struct result create_string(uint64_t length); struct result create_variable(enum types type); struct result add(struct variable thing, struct variable base); struct result remove(struct variable thing, struct variable base); struct result find(struct variable thing, struct variable base); struct result compare(struct variable thing, struct variable another); struct result destroy_object(); struct